<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>获取地区轮廓线</title>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3">
    </script>
    <style type="text/css">
        body {
            font-size: 13px;
            margin: 10px
        }
        
        #container {
            width: 800px;
            height: 500px;
            border: 1px solid gray
        }
    </style>
</head>

<body>
    <div id="container"></div>
    <br /> 输入省、直辖市或县名称：
    <input type="text" id="districtName" style="width:80px" value="北京市">
    <input type="button" onclick="getBoundary()" value="获取轮廓线">

    <script type="text/javascript">
        var map = new BMap.Map("container");
        map.centerAndZoom(new BMap.Point(116.403765, 39.914850), 5);
        map.addControl(new BMap.NavigationControl({
            type: BMAP_NAVIGATION_CONTROL_SMALL
        }));
        map.enableScrollWheelZoom();

        function getBoundary() {
            var bdary = new BMap.Boundary();
            var name = document.getElementById("districtName").value;
            bdary.get(name, function(rs) { //获取行政区域
                map.clearOverlays(); //清除地图覆盖物       
                var count = rs.boundaries.length; //行政区域的点有多少个

                var lanlat = rs.boundaries[0].toString().split(";");
                let result = [
                    []
                ];
                lanlat.forEach(item => {
                    let data = item.split(', ').map(i => {
                        return Number(i);
                    });

                    result[0].push(data);
                });
                console.log(result);

                for (var i = 0; i < count; i++) {
                    var ply = new BMap.Polygon(rs.boundaries[i], {
                        strokeWeight: 2,
                        strokeColor: "#ff0000"
                    }); //建立多边形覆盖物
                    map.addOverlay(ply); //添加覆盖物
                    map.setViewport(ply.getPath()); //调整视野         
                }
            });
        }

        //  坐标转换
        function bd_decrypt(bdLat, bdLon) {
            var x = bdLon - 0.0065,
                y = bdLat - 0.006;
            var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * this.x_pi);
            var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * this.x_pi);
            var gcjLon = z * Math.cos(theta);
            var gcjLat = z * Math.sin(theta);
            return [gcjLat, gcjLon];
        };
    </script>
</body>

</html>